#ifndef VEHICLE_H
#define VEHICLE_H

#include <string>
#include "Chassis.h"
#include "AGXKit.h"
#include "StereoCamera.h"
#include "Lidar.h"
#include "Gyroscope.h"
#include "Display.h"
#include "Battery.h"
#include "Student.h"

class Vehicle {
private:
    std::string id;              // 小车编号
    Chassis chassis;             // 底盘
    AGXKit agxKit;               // AGX套件
    StereoCamera stereoCamera;   // 双目摄像头
    Lidar lidar;                 // 多线激光雷达
    Gyroscope gyroscope;         // 9轴陀螺仪
    Display displayScreen;       // 液晶显示屏
    Battery battery;             // 电池模块
    Student student;             // 分配的学生

public:
    Vehicle();
    Vehicle(const std::string& id);

    // Getters
    std::string getId() const;
    Chassis getChassis() const;
    AGXKit getAgxKit() const;
    StereoCamera getStereoCamera() const;
    Lidar getLidar() const;
    Gyroscope getGyroscope() const;
    Display getDisplay() const;
    Battery getBattery() const;
    Student getStudent() const;

    // Setters
    void setId(const std::string& id);
    void setChassis(const Chassis& chassis);
    void setAgxKit(const AGXKit& agxKit);
    void setStereoCamera(const StereoCamera& stereoCamera);
    void setLidar(const Lidar& lidar);
    void setGyroscope(const Gyroscope& gyroscope);
    void setDisplay(const Display& display);
    void setBattery(const Battery& battery);
    void setStudent(const Student& student);

    void show() const;
};

#endif // VEHICLE_H